1. Technical Field
The present invention relates to client computers that are bootable over a network and, in particular, to client computers that are enabled to be serviced by multiple boot server computers. The present invention provides a method, apparatus, and program to direct client computers to their assigned primary or back-up boot server computer to achieve load balancing across multiple boot server computers.
2. Description of Related Art
Some current personal computer motherboards, network adapters, and boot diskettes include support for the Preboot Execution Environment (PXE) to download an operating system (OS) from the network. PXE relies on extensions to the bootstrap protocol (BOOTP) and dynamic host configuration protocol (DHCP) to identify the source of the OS. PXE uses the trivial file transfer protocol (TFTP) to download the OS. PXE requires the services of a DHCP server, a PXE proxy server, a boot image negotiation layer (BINL) server and a TFTP server.
BOOTP is a a protocol that operates on networks that can also operate the transmission control protocol/Internet protocol (TCP/IP). BOOTP was developed to be used by a diskless workstation or network computer (NC) to obtain its own IP address, the IP address of a boot server, and the name of the file on that boot server that the client could request to start the download of its OS. Upon startup, the client station sends out a BOOTP request to the BOOTP server, which returns the required information. The BOOTP request and response use an IP broadcast function that can send messages before a specific IP address is known. BOOTP requires that an IP address be manually pre-assigned to each client when the BOOTP server is configured. Only one OS file name can be entered when the BOOTP server is configured, so all clients must receive the same OS. The software that transfers the OS files to the client must run on the same physical server as the BOOTP server software that supplies the IP addresses and OS file name information to the client.
DHCP is a protocol based on the BOOTP protocol that was developed to offer improved flexibility for the configuration of computers attached to a network. DHCP servers operate software that automatically assigns IP addresses to client stations logging onto a TCP/IP network. DHCP eliminates having to manually assign permanent IP addresses to clients.
DHCP can also redirect client stations that need to be booted to a BINL server to obtain boot information, permitting client configuration and client boot to be administered separately. In fact, two different servers can respond to the initial DHCP request from a client. A “standard” DHCP server offers the client an IP address. A proxy DHCP, also called a “PXE proxy” server, redirects the client to a BINL server.
The BINL server references the address of a TFTP boot server and the name of the file to request from the TFTP boot server that contains a network bootstrap program (NBP). The client communicates with the BINL server using DHCP-formatted messages.
PXE enables a client network computer that lacks a native operating system to locate and identify an NBP through a network attachment using DHCP and its extensions. PXE also enables the client network computer to acquire the NBP from the TFTP server through that network attachment. PXE also provides a means for running the NBP on the client to continue the network acquisition of additional software required create a user software environment that makes the client capable of performing the more complex and useful tasks assigned to it by an enterprise.
A facilitating property of DHCP is that the client does not initially need to know the address of any other computer. The client performs a DHCP broadcast to discover any DHCP server or PXE proxy server that can recognize that the client is PXE-capable. The DHCP server or PXE proxy server sends a DHCP offer to the client, which contains the address of a BINL server. The client then sends a BINL request to that BINL server. The BINL server returns a BINL reply that references the address of a TFTP boot server and the name of a file from which the client may obtain the NBP. The client then obtains the NBP and all necessary software from the boot server via the TFTP.
Enterprises use PXE as well as DHCP and its extensions as tools to aid the deployment of user software environments to clients through a network from centrally managed boot servers. Recently, user software environments deployed in this manner often include more programs than just the OS and are specific to a selected user or class of users. Other programs, such as Web browsers, Java virtual machines and even business application programs that are needed to make client computers truly productive are being deployed and supported on widely dispersed clients from centrally managed servers through “server-managed client networks.”
Information technology (IT) administrators can use server-managed client networks to centrally maintain user software environments as well as dynamically distribute, and redistribute, these user software environments to clients in response to the changing computational work needs of an enterprise. This provides increased efficiency to lower the total cost of ownership (TCO) of client computers and enhances IT as a strategic tool for enterprises.
As the number of server-managed clients and the size of user software environments both grow, it is increasingly unlikely that a single boot server can bear the entire load for boot services for an enterprise. Multiple boot servers are needed to distribute the boot services load as well as to provide back-up reliability. Applications supplied by vendors to help IT administrators configure server-managed client networks need to be able to perform boot services load balancing by allowing clients to at least be statically assigned to different boot servers. Load balancing would be enhanced if the application were also able to dynamically reassign clients to different boot servers as there are changes in the availability and loading of individual boot servers.
Current approaches to assigning PXE-capable clients to boot servers have a dependency on the server redirection configurations of DHCP, PXE proxy, and BINL services. These services are delivered by multiple vendors, such as Intel, IBM and Microsoft, with different implementations and behaviors on each platform. When attempting to manage the assignment of clients to boot servers for load balancing, there is the problem of how to seamlessly and concurrently update the server redirection configurations of these services without having to write a lot of unique code per service, per platform and per vendor. In addition, many of these services have to be stopped and restarted to make and integrate every configuration change. This is an expensive process, is platform specific, and adversely affects the availability of these services.
A recent enhancement to PXE and DHCP is the addition of optional extensions that can provide the user of the client computer with a list or menu of possible boot servers from which to choose. This improves upon the standard implementation where each client could only be directed to a single boot server based on a client machine identifier, architecture class, or network interface type. However, it is unlikely that users of client computers presented with these lists of boot servers would be sufficiently aware of the current availability and loading of boot servers to be able to make boot server selections that would optimize load balancing. These lists of boot servers could be updated to reflect options according to the current network environment, but this would require updates to the DHCP or PXE proxy service configurations with the disadvantages described previously. Also, not all PXE configurations deployed in enterprises support the new extensions that provide the list of boot servers.
Another possible network configuration option is to provide multiple sets of DHCP, PXE proxy and BINL servers, with each set statically configured to redirect clients to a different boot server. These services could simply be stopped when their associated boot server was unavailable or too heavily loaded so that no more booting clients would be directed to that boot server. These services would be restarted when the boot server was again able to service booting clients.
This solution requires the server-managed client application to manage the starting and stopping of these services, possibly even when they are located on different physical servers. It also does not support the assignment of clients or support of particular user software environments to one boot server or a subset of boot servers. This is because PXE definition does not specify how the PXE support resident on the client selects among the competing DHCP offer packets that it would receive from each DHCP and PXE proxy server. Therefore, there is no guarantee that a client would be directed to its appropriate boot server unless each DHCP and PXE proxy server were configured with a list of clients that it was allowed to respond to. This requires per-client configuration of these servers which is more arduous than per-server configuration because the population of clients is likely to be larger and more changeable than is the population of servers. Each change in the client population would require changes in the configuration of DHCP or PXE proxy servers, with the disadvantages described previously.
Therefore, it would be advantageous to have a method and apparatus for server-based network computer load balancing across multiple boot servers that is independent of the operation of PXE support on the client and independent of the operation and configuration of DHCP, PXE proxy, and BINL services.